/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * VistaPrincipal.java
 *
 * Created on 11-nov-2009, 12:47:22
 */
package vistas;


import controladores.ControladorPrincipal;
import dialogos.DialogoAcercaDe;
import dialogos.DialogoAutenticacion;
import dialogos.DialogoDatosCliente;
import dialogos.DialogoModificarUsuario;
import dialogos.DialogoValoresMetodoAdapMPF;
import dialogos.DialogoValoresMetodologia;
import java.awt.Desktop;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
import javax.swing.UnsupportedLookAndFeelException;
import org.jvnet.substance.SubstanceLookAndFeel;
import pestañas.PanelPaso1;
import pestañas.PanelPaso2;
import pestañas.PanelPaso3;
import pestañas.PanelPaso4;
import utilidades.LeerArchivo;
import javax.help.HelpSet;
import javax.help.HelpBroker;
import java.net.URL;
import java.util.Vector;
import javax.swing.JRadioButton;
import javax.swing.UIManager;
import javax.swing.undo.CannotRedoException;
import javax.swing.undo.UndoManager;

import org.jvnet.substance.skin.*;

//Modificación grupo 1: idioma cuadro guardar, extensión txt
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
//

/**
 *
 * @author Shidobu
 */

// GRUPO4 Prevención de errores: Vista principal debe implementar WindowListener para acción al cerrar la ventana
public class VistaPrincipal extends javax.swing.JFrame implements WindowListener {
// Fin GRUPO4

	private ControladorPrincipal controlador;
	private String usuarioActual;
	private String empresaActual;
	private String nombreClienteActual;

        private int it = 0;

        /*
         * GRUPO4 Prevención de errores 4: Para proveer alerta de confirmacion al abandonar la aplicación
           o al abrir un archivo
         */

        public boolean progresoAnterior= false;
        public boolean progresoActual= false;

        public String nombreArchivo= "Sin título";

        // Fin GRUPO4

        /*
         * MODIFICACIÓN HECHA POR EL GRUPO 2
         * Inserción de las funcionalidades Deshacer y Rehacer en el menu
         * Implementacion de estas funcionalidades
         */

        protected UndoManager undoManager = new UndoManager ();

        public UndoManager getUndoManager() {
            return undoManager;
        }

        public void updateButtons () {
            //Undo.setText ( undoManager.getUndoPresentationName ()) ;
            //ReUndo.setText ( undoManager.getRedoPresentationName ()) ;
            menuItemUndo.setEnabled ( undoManager.canUndo ()) ;
            menuItemRedo.setEnabled ( undoManager.canRedo ()) ;
        }

        private void cargarListener(){

               menuItemUndo.addActionListener(
                    new ActionListener() {
                        public void actionPerformed ( ActionEvent e ) {
                            try {
                                undoManager.undo () ;
                            } catch ( CannotRedoException cre ) {
                                cre.printStackTrace () ;
                            }
                            updateButtons () ;
                        }
                    }
                );

                menuItemRedo.addActionListener (
                    new ActionListener () {
                        public void actionPerformed ( ActionEvent e ) {
                            try {
                                undoManager.redo () ;
                            } catch ( CannotRedoException cre ) {
                                cre.printStackTrace () ;
                            }
                            updateButtons () ;
                        }
                    }
                );
        }

        /*
         * FIN MODIFICACION DESHACER REHACER
         */




	/** Creates new form VistaPrincipal */
	public VistaPrincipal (ControladorPrincipal controlador) {
		this.controlador = controlador;
		initComponents ();
                //MOFIFICACION HECHA POR EL GRUPO 2 (DESHACER Y REHACER)
               this.cargarListener();
                //FIN MOFIFICACION HECHA POR EL GRUPO 2 (DESHACER Y REHACER)
/*
		try {
			SubstanceLookAndFeel.setSkin (new MistAquaSkin ());// skin look and feel

		} catch (Exception e) {
			//System.out.println ("No se cargo Look and feel");
                         JOptionPane.showMessageDialog(this,
                            "No se pudo cargar el skin de la aplicación",
                            "Error al iniciar la aplicación",
                            JOptionPane.ERROR_MESSAGE);
                         System.exit(0);

		}
 */
		this.setLocationRelativeTo (null);

		panelPaso1.setVista (this);
		//panelPaso1.setBackground (SubstanceColorResource.LIGHT_GRAY);
		panelPaso1.setBarraProgreso (jProgressBarPaso1);
		panelPaso2.setVista (this);
		//panelPaso2.setBackground (SubstanceColorResource.LIGHT_GRAY);
		panelPaso2.setBarraProgreso (jProgressBarPaso2);
		panelPaso3.setVista (this);
		//panelPaso3.setBackground (SubstanceColorResource.LIGHT_GRAY);
		panelPaso3.setBarraProgreso (jProgressBarPaso3);
		panelPaso4.setVista (this);
		//panelPaso4.setBackground (SubstanceColorResource.LIGHT_GRAY);
		autenticacion ();
		preparaAyuda ();
                this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
                
                /* GRUPO4 Prevención de errores 4: Se añaden los listeners, interesa el que escucha el evento
                 * de cerrar la ventana.
                 */
                
                this.setDefaultCloseOperation (JFrame.DO_NOTHING_ON_CLOSE);
                this.addWindowListener(this);
                
                // Fin GRUPO4

                /* GRUPO4 Prevencion de errores 1: Se añaden listeners en cada barra
                 de progreso para validar sus estados --> Deshabilitar la pestaña de cotización
                 * hasta que los demás formularios hayan sido completados
                 */
                jProgressBarPaso1.addChangeListener(new javax.swing.event.ChangeListener() {
                    public void stateChanged(javax.swing.event.ChangeEvent evt) {

                        jProgressBarPasosStateChanged(evt);
                    }
                });

                jProgressBarPaso2.addChangeListener(new javax.swing.event.ChangeListener() {
                    public void stateChanged(javax.swing.event.ChangeEvent evt) {

                        jProgressBarPasosStateChanged(evt);
                    }
                });

                jProgressBarPaso3.addChangeListener(new javax.swing.event.ChangeListener() {
                    public void stateChanged(javax.swing.event.ChangeEvent evt) {
                        jProgressBarPasosStateChanged(evt);
                    }
                });
                // Fin GRUPO4
	}

	public void autenticacion () {
		DialogoAutenticacion dialogoAutenticacion = new DialogoAutenticacion (this, true);
		dialogoAutenticacion.setVisible (true);
		this.jLabelNombreUsuario.setText (dialogoAutenticacion.getNombre ());
//                this.jLabelNombreUsuario.setText ("Usu7");
		usuarioActual = dialogoAutenticacion.getNombre ();
//                usuarioActual = "Usu7";
	}
 //
        public String usuario() {
            return this.usuarioActual;
        }
//
	public void preparaAyuda () {
		try {
			// Carga el fichero de ayuda
			File fichero = new File ("ayuda_set.hs");
			URL hsURL = fichero.toURI ().toURL ();

			// Crea el HelpSet
			HelpSet helpset = new HelpSet (getClass ().getClassLoader (), hsURL);
			HelpBroker hb = helpset.createHelpBroker ();

			hb.enableHelpOnButton (jMenuItemFAQ, "inicio", helpset);
			hb.enableHelpKey (this.getContentPane (), "inicio", helpset);
		} catch (Exception e) {
			e.printStackTrace ();
		}
	}

	public void cambiarNombre (String nombre) {
		this.jLabelNombreUsuario.setText (nombre);
	}

	public JProgressBar getJProgressBarPaso1 () {
		return jProgressBarPaso1;
	}

	public JProgressBar getJProgressBarPaso2 () {
		return jProgressBarPaso2;
	}

	public JProgressBar getJProgressBarPaso3 () {
		return jProgressBarPaso3;
	}

	public PanelPaso1 getPanelPaso1 () {
		return panelPaso1;
	}

	public void setPanelPaso1 (PanelPaso1 panelPaso1) {
		this.panelPaso1 = panelPaso1;
	}

	public PanelPaso2 getPanelPaso2 () {
		return panelPaso2;
	}

	public void setPanelPaso2 (PanelPaso2 panelPaso2) {
		this.panelPaso2 = panelPaso2;
	}

	public PanelPaso3 getPanelPaso3 () {
		return panelPaso3;
	}

	public void setPanelPaso3 (PanelPaso3 panelPaso3) {
		this.panelPaso3 = panelPaso3;
	}

	public PanelPaso4 getPanelPaso4 () {
		return panelPaso4;
	}

	public void setPanelPaso4 (PanelPaso4 panelPaso4) {
		this.panelPaso4 = panelPaso4;
	}

	public String getEmpresa () {
		return empresaActual;
	}

	public void setEmpresa (String empresa) {
		this.empresaActual = empresa;
	}

	public String getNombreCliente () {
		return nombreClienteActual;
	}

	public void setNombreCliente (String cliente) {
		this.nombreClienteActual = cliente;
	}

        void aumentoBarra (int panel , int valorPrevio , int valorActual)
        {

            valorPrevio = valorPrevio + 1;

            if (panel == 1)
            {
                
                    getPanelPaso1 ().barraProgreso.setValue(valorPrevio);
                
                return;
            }
            if (panel == 2)
            {
                getPanelPaso2 ().barraProgreso.setValue(valorPrevio);

                return;
            }
            if (panel == 3)
            {
                getPanelPaso3 ().barraProgreso.setValue(valorPrevio);

                return;
            }
        }

	/** This method is called from within the constructor to
	 * initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is
	 * always regenerated by the Form Editor.
	 */
	@SuppressWarnings ("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jTabbedPanePasos = new javax.swing.JTabbedPane();
        panelPaso1 = new pestañas.PanelPaso1();
        panelPaso2 = new pestañas.PanelPaso2();
        panelPaso3 = new pestañas.PanelPaso3();
        panelPaso4 = new pestañas.PanelPaso4();
        jLabelUsuarioActual = new javax.swing.JLabel();
        jLabelNombreUsuario = new javax.swing.JLabel();
        jLabelFechaUltimaVisita = new javax.swing.JLabel();
        jProgressBarPaso1 = new javax.swing.JProgressBar();
        jProgressBarPaso2 = new javax.swing.JProgressBar();
        jProgressBarPaso3 = new javax.swing.JProgressBar();
        jLabelPaso1 = new javax.swing.JLabel();
        jLabelPaso2 = new javax.swing.JLabel();
        jLabelPaso3 = new javax.swing.JLabel();
        jButtonLimpiarFormulario = new javax.swing.JButton();
        jMenuBar = new javax.swing.JMenuBar();
        jMenuArchivo = new javax.swing.JMenu();
        jMenuItemNuevaCotizacion = new javax.swing.JMenuItem();
        jMenuItemAbrir = new javax.swing.JMenuItem();
        jMenuItemGuardar = new javax.swing.JMenuItem();
        jSeparatorCotizacionCuenta = new javax.swing.JSeparator();
        jMenuItemModificarCuenta = new javax.swing.JMenuItem();
        jMenuItemCerrarSesion = new javax.swing.JMenuItem();
        jSeparatorCuentaSalir = new javax.swing.JSeparator();
        jMenuItemSalir = new javax.swing.JMenuItem();
        jMenuEditar = new javax.swing.JMenu();
        menuItemUndo = new javax.swing.JMenuItem();
        menuItemRedo = new javax.swing.JMenuItem();
        jMenuItemLimpiarFormulario = new javax.swing.JMenuItem();
        jMenuMetodoAdaptado = new javax.swing.JMenu();
        jMenuItemModificarValores = new javax.swing.JMenuItem();
        jMenuPropiedades = new javax.swing.JMenu();
        jMenuItemDefinirValoresEstimacion = new javax.swing.JMenuItem();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenuAyuda = new javax.swing.JMenu();
        jMenuItem3 = new javax.swing.JMenuItem();
        jMenuItemFAQ = new javax.swing.JMenuItem();
        jMenuItemAcercaDe = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        setTitle("REUSA - Ventana principal");
        setMinimumSize(new java.awt.Dimension(620, 701));
        setName("VentanaPrincipal"); // NOI18N
        setResizable(false);

        jTabbedPanePasos.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                jTabbedPanePasosStateChanged(evt);
            }
        });
        jTabbedPanePasos.addTab("Definición de criterios", panelPaso1);
        jTabbedPanePasos.addTab("Definición de costos empleados", panelPaso2);
        jTabbedPanePasos.addTab("Definición de valor HH", panelPaso3);
        jTabbedPanePasos.addTab("Cotización", panelPaso4);

        // GRUPO4 Prevención de errores 1: Pestaña de cotizacíon desabilitada por defecto
        jTabbedPanePasos.setEnabledAt(3, false);
        jTabbedPanePasos.setToolTipTextAt(3, "Debe completar las otras pestañas");

        jLabelUsuarioActual.setFont(new java.awt.Font("Tahoma", 1, 12));
        jLabelUsuarioActual.setText("Usuario actual:");

        jLabelNombreUsuario.setFont(new java.awt.Font("Tahoma", 1, 14));
        jLabelNombreUsuario.setForeground(new java.awt.Color(102, 204, 0));

        jLabelFechaUltimaVisita.setFont(new java.awt.Font("Tahoma", 2, 12));

        jProgressBarPaso1.setMaximum(9);
        jProgressBarPaso1.setBorderPainted(false);
        jProgressBarPaso1.setMaximumSize(new java.awt.Dimension(147, 13));
        jProgressBarPaso1.setPreferredSize(new java.awt.Dimension(147, 13));
        jProgressBarPaso1.setStringPainted(true);
        jProgressBarPaso1.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                jProgressBarPaso1StateChanged(evt);
            }
        });

        jProgressBarPaso2.setMaximum(14);
        jProgressBarPaso2.setBorderPainted(false);
        jProgressBarPaso2.setMaximumSize(new java.awt.Dimension(147, 13));
        jProgressBarPaso2.setPreferredSize(new java.awt.Dimension(147, 13));
        jProgressBarPaso2.setStringPainted(true);
        jProgressBarPaso2.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                jProgressBarPaso2StateChanged(evt);
            }
        });

        jProgressBarPaso3.setMaximum(4);
        jProgressBarPaso3.setBorderPainted(false);
        jProgressBarPaso3.setMaximumSize(new java.awt.Dimension(147, 13));
        jProgressBarPaso3.setPreferredSize(new java.awt.Dimension(147, 13));
        jProgressBarPaso3.setStringPainted(true);
        jProgressBarPaso3.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                jProgressBarPaso3StateChanged(evt);
            }
        });

        jLabelPaso1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabelPaso1.setText("Definición de criterios");

        jLabelPaso2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabelPaso2.setText("Definición de costos empleados");

        jLabelPaso3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabelPaso3.setText("Definición de valor HH");

        jButtonLimpiarFormulario.setText("Limpiar Formulario");
        jButtonLimpiarFormulario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonLimpiarFormularioActionPerformed(evt);
            }
        });

        jMenuArchivo.setText("Archivo");

        jMenuItemNuevaCotizacion.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemNuevaCotizacion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/nuevo.png"))); // NOI18N
        jMenuItemNuevaCotizacion.setText("Nueva cotización");
        jMenuItemNuevaCotizacion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemNuevaCotizacionActionPerformed(evt);
            }
        });
        jMenuArchivo.add(jMenuItemNuevaCotizacion);

        jMenuItemAbrir.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemAbrir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/open.png"))); // NOI18N
        jMenuItemAbrir.setText("Abrir");
        jMenuItemAbrir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemAbrirActionPerformed(evt);
            }
        });
        jMenuArchivo.add(jMenuItemAbrir);

        jMenuItemGuardar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_G, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemGuardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/save.png"))); // NOI18N
        jMenuItemGuardar.setText("Guardar");
        jMenuItemGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemGuardarActionPerformed(evt);
            }
        });
        jMenuArchivo.add(jMenuItemGuardar);
        jMenuArchivo.add(jSeparatorCotizacionCuenta);

        jMenuItemModificarCuenta.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemModificarCuenta.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/user_.png"))); // NOI18N
        jMenuItemModificarCuenta.setText("Modificar cuenta");
        jMenuItemModificarCuenta.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemModificarCuentaActionPerformed(evt);
            }
        });
        jMenuArchivo.add(jMenuItemModificarCuenta);

        jMenuItemCerrarSesion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/log_out.png"))); // NOI18N
        jMenuItemCerrarSesion.setText("Cerrar sesión");
        jMenuItemCerrarSesion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemCerrarSesionActionPerformed(evt);
            }
        });
        jMenuArchivo.add(jMenuItemCerrarSesion);
        jMenuArchivo.add(jSeparatorCuentaSalir);

        jMenuItemSalir.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemSalir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/exit.png"))); // NOI18N
        jMenuItemSalir.setText("Salir");
        jMenuItemSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemSalirActionPerformed(evt);
            }
        });
        jMenuArchivo.add(jMenuItemSalir);

        jMenuBar.add(jMenuArchivo);

        jMenuEditar.setText("Editar");

        menuItemUndo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Z, java.awt.event.InputEvent.CTRL_MASK));
        menuItemUndo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/undo_16.png"))); // NOI18N
        menuItemUndo.setText("Deshacer");
        menuItemUndo.setEnabled(false);
        jMenuEditar.add(menuItemUndo);

        menuItemRedo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Y, java.awt.event.InputEvent.CTRL_MASK));
        menuItemRedo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/redo.png"))); // NOI18N
        menuItemRedo.setText("Rehacer");
        menuItemRedo.setEnabled(false);
        jMenuEditar.add(menuItemRedo);

        jMenuItemLimpiarFormulario.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemLimpiarFormulario.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/eraser.png"))); // NOI18N
        jMenuItemLimpiarFormulario.setText("Limpiar formulario");
        jMenuItemLimpiarFormulario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemLimpiarFormularioActionPerformed(evt);
            }
        });
        jMenuEditar.add(jMenuItemLimpiarFormulario);

        jMenuBar.add(jMenuEditar);

        jMenuMetodoAdaptado.setText("Método Adaptado");

        jMenuItemModificarValores.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_M, java.awt.event.InputEvent.ALT_MASK));
        jMenuItemModificarValores.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/edit.png"))); // NOI18N
        jMenuItemModificarValores.setText("Modificar Valores");
        jMenuItemModificarValores.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemModificarValoresActionPerformed(evt);
            }
        });
        jMenuMetodoAdaptado.add(jMenuItemModificarValores);

        jMenuBar.add(jMenuMetodoAdaptado);

        jMenuPropiedades.setText("Propiedades");

        jMenuItemDefinirValoresEstimacion.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.ALT_MASK));
        jMenuItemDefinirValoresEstimacion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/kspread_ksp.png"))); // NOI18N
        jMenuItemDefinirValoresEstimacion.setText("Definir Valores de Estimación");
        jMenuItemDefinirValoresEstimacion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemDefinirValoresEstimacionActionPerformed(evt);
            }
        });
        jMenuPropiedades.add(jMenuItemDefinirValoresEstimacion);

        jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_D, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItem1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/clienteD.png"))); // NOI18N
        jMenuItem1.setText("Datos del Cliente");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenuPropiedades.add(jMenuItem1);

        jMenuBar.add(jMenuPropiedades);

        jMenuAyuda.setText("Ayuda");

        jMenuItem3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/easymoblog.png"))); // NOI18N
        jMenuItem3.setText("Manual de Usuario");
        jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem3ActionPerformed(evt);
            }
        });
        jMenuAyuda.add(jMenuItem3);

        jMenuItemFAQ.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/help.png"))); // NOI18N
        jMenuItemFAQ.setText("Ayuda Contenidos");
        jMenuAyuda.add(jMenuItemFAQ);

        jMenuItemAcercaDe.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/information.png"))); // NOI18N
        jMenuItemAcercaDe.setText("Acerca de...");
        jMenuItemAcercaDe.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemAcercaDeActionPerformed(evt);
            }
        });
        jMenuAyuda.add(jMenuItemAcercaDe);

        jMenuBar.add(jMenuAyuda);

        setJMenuBar(jMenuBar);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGap(79, 79, 79)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jProgressBarPaso1, javax.swing.GroupLayout.DEFAULT_SIZE, 156, Short.MAX_VALUE)
                            .addComponent(jLabelPaso1, javax.swing.GroupLayout.DEFAULT_SIZE, 156, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jProgressBarPaso2, javax.swing.GroupLayout.DEFAULT_SIZE, 155, Short.MAX_VALUE)
                            .addComponent(jLabelPaso2, javax.swing.GroupLayout.DEFAULT_SIZE, 155, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jProgressBarPaso3, javax.swing.GroupLayout.DEFAULT_SIZE, 156, Short.MAX_VALUE)
                            .addComponent(jLabelPaso3, javax.swing.GroupLayout.DEFAULT_SIZE, 156, Short.MAX_VALUE))
                        .addGap(69, 69, 69))
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jLabelUsuarioActual)
                        .addGap(18, 18, 18)
                        .addComponent(jLabelNombreUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, 218, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(114, 114, 114)
                        .addComponent(jLabelFechaUltimaVisita, javax.swing.GroupLayout.DEFAULT_SIZE, 177, Short.MAX_VALUE)))
                .addContainerGap())
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(460, Short.MAX_VALUE)
                .addComponent(jButtonLimpiarFormulario, javax.swing.GroupLayout.PREFERRED_SIZE, 157, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(20, 20, 20))
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTabbedPanePasos, javax.swing.GroupLayout.DEFAULT_SIZE, 617, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelUsuarioActual)
                    .addComponent(jLabelNombreUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelFechaUltimaVisita, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jTabbedPanePasos, javax.swing.GroupLayout.PREFERRED_SIZE, 558, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButtonLimpiarFormulario)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelPaso1)
                    .addComponent(jLabelPaso3)
                    .addComponent(jLabelPaso2))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jProgressBarPaso3, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jProgressBarPaso1, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jProgressBarPaso2, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

	private void jMenuItemCerrarSesionActionPerformed (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemCerrarSesionActionPerformed
		controlador.reiniciar ();
	}//GEN-LAST:event_jMenuItemCerrarSesionActionPerformed

	private void jMenuItemSalirActionPerformed (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemSalirActionPerformed
		controlador.salir ();
	}//GEN-LAST:event_jMenuItemSalirActionPerformed

	private void jMenuItemModificarCuentaActionPerformed (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemModificarCuentaActionPerformed
		DialogoModificarUsuario dmu = new DialogoModificarUsuario (this, true, usuarioActual);
		dmu.setVisible (true);
	}//GEN-LAST:event_jMenuItemModificarCuentaActionPerformed

        private void jMenuItemAbrirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemAbrirActionPerformed


             /*
             * GRUPO4 Prevención de errores 3: Se verifica si hay cambios desde la ultima vez
             que se guardó un archivo
             */
            int seleccion;

                    if(progresoAnterior==progresoActual)
                    {
                        seleccion= 1;
                        //return;
                    }
                    else
                    {
                    seleccion = JOptionPane.showConfirmDialog(this,
                                                             "El archivo "+nombreArchivo+" ha cambiado.\n ¿Desea guardar los cambios antes de continuar?",
                                                              "REUSA",
                                                               JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
                    }
                    if (seleccion == JOptionPane.YES_OPTION )
                    {
                        guardar();
                    }
                    if (seleccion == JOptionPane.NO_OPTION )
                    {
                    }
                    if (seleccion == JOptionPane.CANCEL_OPTION )
                    {
                        return;
                    }
                    // Fin GRUPO4
			LeerArchivo leer_archivo = new LeerArchivo ();
			try {
				leer_archivo.abrir_archivo (usuarioActual, this);

			} catch (FileNotFoundException ex) {
				Logger.getLogger (VistaPrincipal.class.getName ()).log (Level.SEVERE, null, ex);
			} catch (IOException ex) {
				Logger.getLogger (VistaPrincipal.class.getName ()).log (Level.SEVERE, null, ex);
			}
			//elegir_archivo elegir;
			//elegir = new elegir_archivo();
			//elegir.setVisible(true);

        }//GEN-LAST:event_jMenuItemAbrirActionPerformed

        private void jMenuItemModificarValoresActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemModificarValoresActionPerformed
			DialogoValoresMetodoAdapMPF dialogoValores = new DialogoValoresMetodoAdapMPF (this, true);
			dialogoValores.setVisible (true);
        }//GEN-LAST:event_jMenuItemModificarValoresActionPerformed

		private void jMenuItemDefinirValoresEstimacionActionPerformed (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemDefinirValoresEstimacionActionPerformed
			DialogoValoresMetodologia dialogoValoresMetodologia = new DialogoValoresMetodologia (this, true);
			dialogoValoresMetodologia.setVisible (true);
		}//GEN-LAST:event_jMenuItemDefinirValoresEstimacionActionPerformed

	private void guardar () {
		String ruta;
		JFileChooser fileChooser = new JFileChooser ();
                //filtrar extension
		FileFilter filter = new FileNameExtensionFilter("Archivo texto REUSA (.txt)", "txt");
                fileChooser.addChoosableFileFilter(filter);
                //fileChooser.setApproveButtonText(boton_abrir);
                // Editando labels en Inglés
                UIManager.put("FileChooser.lookInLabelText", "Buscar en");
                UIManager.put("FileChooser.cancelButtonText", "Cancelar");
		UIManager.put("FileChooser.openButtonText", "Guardar");
		UIManager.put("FileChooser.saveInLabelText", "Guardar en");
		UIManager.put("FileChooser.fileNameLabelText", "Nombre del Archivo");
		UIManager.put("FileChooser.filesOfTypeLabelText", "Archivos de Tipo");
		UIManager.put("FileChooser.openButtonToolTipText", "Abrir Archivo Seleccionado");
		UIManager.put("FileChooser.cancelButtonToolTipText","Cancelar");
		UIManager.put("FileChooser.fileNameHeaderText","Nombre del Archivo");
		UIManager.put("FileChooser.upFolderToolTipText", "Subir");
		UIManager.put("FileChooser.homeFolderToolTipText","Escritorio");
		UIManager.put("FileChooser.newFolderToolTipText","Crear nueva Carpeta");
		UIManager.put("FileChooser.listViewButtonToolTipText","Ver Lista");
		UIManager.put("FileChooser.newFolderButtonText","Crear nueva Carpeta");
		UIManager.put("FileChooser.renameFileButtonText", "Renombrar archivo");
		UIManager.put("FileChooser.deleteFileButtonText", "Eliminar achivo");
		UIManager.put("FileChooser.filterLabelText", "Archivos de Tipo");
		UIManager.put("FileChooser.detailsViewButtonToolTipText", "Ver Detalles");
		UIManager.put("FileChooser.fileSizeHeaderText","Tamaño");
		UIManager.put("FileChooser.fileDateHeaderText", "Fecha de modificación");
                // Guardar edición
                SwingUtilities.updateComponentTreeUI(fileChooser);
		//
                fileChooser.setFileFilter(filter);
		fileChooser.setAcceptAllFileFilterUsed(false);
		int seleccion = fileChooser.showSaveDialog (this);
		if (seleccion == JFileChooser.APPROVE_OPTION) {
			File fichero = fileChooser.getSelectedFile ();
			ruta = fichero.getPath ();
                        String nombreArchivo = fichero.getName();
                        //Deja de ser archivo a secas, ahora es un archivo con extension .txt
                        String nombre_archivo = ruta +".txt" ;
                        //
			FileWriter archivo = null;
			PrintWriter pw = null;
			try {

                                // GRUPO4: PrevencionErrores3: Diálogo de confirmación para sobreescribir archivo
                                if(fichero.exists())
                                {
                                    int opcion= JOptionPane.showConfirmDialog(jTabbedPanePasos,"El archivo "+nombreArchivo+" ya existe.\n¿desea sobreescribirlo?","REUSA",JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE);

                                    if(opcion!=0)
                                    {
                                        return;
                                    }
                                }
                                // Fin GRUPO4

				archivo = new FileWriter (nombre_archivo);
                                //archivo = new FileWriter (ruta);
				pw = new PrintWriter (archivo);
				pw.println (usuarioActual);
				pw.println (panelPaso1.retornarTamaño ());
				pw.println (panelPaso1.retornarModulos ());
				pw.println (panelPaso1.retornarUsuarios ());
				pw.println (panelPaso1.retornarLugar ());
				pw.println (panelPaso1.retornarTiempos ());
				pw.println (panelPaso1.retornarPeriodo ());
				pw.println (panelPaso2.getValorUF ());
				pw.println (panelPaso2.retornaArriendo ());
				pw.println (panelPaso2.retornaGastosOP ());
				pw.println (panelPaso2.retornaGastosMA ());
				pw.println (panelPaso2.retornaInsumos ());
				pw.println (panelPaso2.retornaGastosB ());
				pw.println (panelPaso2.retornaGastosMov ());
				pw.println (panelPaso2.retornaGastosCoffe ());
				pw.println (panelPaso2.retornaGastosAlim ());
				pw.println (panelPaso2.retornaServExt ());
				pw.println (panelPaso2.retornaTotalGastos ());
				pw.println (panelPaso2.retornaFaseRep ());
				pw.println (panelPaso2.retornaCostos ());
				pw.println (panelPaso3.retornaPaso3 ());
				pw.close ();

                                // GRUPO4 Prevención de errores: al guardar el archivo los progresos actual y anterior
                                // se igualan, además se asigna la ruta del archivo guardado al valor de ejecución
                                nombreArchivo= ruta;
                                progresoAnterior=progresoActual;
                                // Fin GRUPO4

			} catch (IOException ex) {
				Logger.getLogger (VistaPrincipal.class.getName ()).log (Level.SEVERE, null, ex);
			}
		}
	}

	private void limpiarPaso (int paso) {
                
		switch (paso) {
			case 0: {
                                this.panelPaso1.buttonGroupTamañoSoftware.clearSelection();
                                this.panelPaso1.buttonGroupModalidadPeriodoEntrega.clearSelection();
                                this.panelPaso1.buttonGroupLugarEvaluacion.clearSelection();       
//				getPanelPaso1 ().setTamañoSoftwarePequeño (false);
//				getPanelPaso1 ().setTamañoSoftwareMedio (false);
//				getPanelPaso1 ().setTamañoSoftwareGrande (false);
//				getPanelPaso1 ().setLugarEmpresa (false);
//				getPanelPaso1 ().setLugarArrendado (false);
				getPanelPaso1 ().setNumeroModulosPequeños ("");
				getPanelPaso1 ().setNumeroModulosMedianos ("");
				getPanelPaso1 ().setHorasTamañoSoftware ("");
				getPanelPaso1 ().setHorasUsuariosEvaluadores ("");
				getPanelPaso1 ().setHorasLugarEvaluacion ("");
				getPanelPaso1 ().setUCE ("");
				getPanelPaso1 ().setUNCE ("");
				getPanelPaso1 ().setUEX ("");
				getPanelPaso1 ().setTotalUsuarios ("");
				getPanelPaso1 ().setDiasEvaluador ("");
				getPanelPaso1 ().setDiasEmpresa ("");
				getPanelPaso1 ().setFactorTiempoEntrega ("");
                                getPanelPaso1 ().limpiarbarra();
//				getPanelPaso1 ().setEvaluador (false);
//				getPanelPaso1 ().setEmpresa (false);
//				jProgressBarPaso1.setValue (0);
//				getPanelPaso3 ().setBarraProgreso (jProgressBarPaso1);
                              
                                
				break;
			}
			case 1: {
				getPanelPaso2 ().setValorUF ("");
				getPanelPaso2 ().setArriendoOficinaPesos ("");
				getPanelPaso2 ().setArriendoOficinaUF ("");
				getPanelPaso2 ().setGastosOperacionalesPesos ("");
				getPanelPaso2 ().setGastosOperacionalesUF ("");
				getPanelPaso2 ().setGastosMaterialApoyoPesos ("");
				getPanelPaso2 ().setGastosMaterialApoyoUF ("");
				getPanelPaso2 ().setInsumosPesos ("");
				getPanelPaso2 ().setInsumosUF ("");
				getPanelPaso2 ().setGastosBasicosPesos ("");
				getPanelPaso2 ().setGastosBasicosUF ("");
				getPanelPaso2 ().setGastosMovilizacionPesos ("");
				getPanelPaso2 ().setGastosMovilizacionUF ("");
				getPanelPaso2 ().setGastosCoffeBreaksPesos ("");
				getPanelPaso2 ().setGastosCoffeBreaksUF ("");
				getPanelPaso2 ().setGastosAlimentacionPesos ("");
				getPanelPaso2 ().setGastosAlimentacionUF ("");
				getPanelPaso2 ().setGastosServiciosExternosPesos ("");
				getPanelPaso2 ().setGastosServiciosExternosUF ("");
				getPanelPaso2 ().setGastosTotalPesos ("");
				getPanelPaso2 ().setGastosTotalUF ("");
				getPanelPaso2 ().setValorFactorCosto ("");
				getPanelPaso2 ().setTotalCostoPesos ("");
				getPanelPaso2 ().setTotalCostoUF ("");
				getPanelPaso2 ().setHorasReparacion ("");
				getPanelPaso2 ().setValorNumeroDesarrolladores ("");
				getPanelPaso2 ().setValorHHDesarrolladorPesos ("");
				getPanelPaso2 ().setValorHHDesarrolladorUF ("");
//				jProgressBarPaso2.setValue (0);
//				getPanelPaso3 ().setBarraProgreso (jProgressBarPaso2);
				break;
			}
			case 2: {
				getPanelPaso3 ().setEvaluadorExpertoValorHHPesos ("");
				getPanelPaso3 ().setEvaluadorExpertoValorHHUF ("");
				getPanelPaso3 ().setUsuarioEvaluadorValorHHPesos ("");
				getPanelPaso3 ().setUsuarioEvaluadorValorHHUF ("");
                                getPanelPaso3 ().setTecnicoTotalValorHHPesos("");
                                getPanelPaso3 ().setTecnicoTotalValorHHUF("");
                                getPanelPaso3 ().setHorasTecnico("");
                                getPanelPaso3 ().setTecnicoValorHHPesos("");
                                getPanelPaso3 ().setTecnicoValorHHUF("");
//				jProgressBarPaso3.setValue (0);
//				getPanelPaso3 ().setBarraProgreso (jProgressBarPaso3);
				break;
			}
			case 3: {
//				getPanelPaso4 ().setEvaluadorExpertoValorHH ("");
//				getPanelPaso4 ().setEvaluadorExpertoHorasEvaluacion ("");
//				getPanelPaso4 ().setUsuarioEvaluadorValorHH ("");
//				getPanelPaso4 ().setUsuarioEvaluadorHorasEvaluacion ("");
//				getPanelPaso4 ().setValorOtrosCostos ("");
//				getPanelPaso4 ().setTotalCostoEvaluacionPesos ("");
//				getPanelPaso4 ().setTotalCostoEvaluacionUF ("");
//				getPanelPaso4 ().setDesarrolladorValorHH ("");
//				getPanelPaso4 ().setDesarrolladorHorasReparacion ("");
//				getPanelPaso4 ().setTotalCostoReparacionPesos ("");
//				getPanelPaso4 ().setTotalCostoReparacionUF ("");
//				jProgressBarPaso1.setValue (0);
//				getPanelPaso3 ().setBarraProgreso (jProgressBarPaso1);
//				jProgressBarPaso2.setValue (0);
//				getPanelPaso3 ().setBarraProgreso (jProgressBarPaso2);
//				jProgressBarPaso3.setValue (0);
//				getPanelPaso3 ().setBarraProgreso (jProgressBarPaso3);
				break;
			}
		}
	}

        //método que limpia todos los datos de todos los pasos de la aplicación
        private void limpiarTodosPasos () {

            //borrar datos panelPaso1
            getPanelPaso1 ().setTamañoSoftwarePequeño (false);
            getPanelPaso1 ().setTamañoSoftwareMedio (false);
            getPanelPaso1 ().setTamañoSoftwareGrande (false);
            getPanelPaso1 ().setLugarEmpresa (false);
            getPanelPaso1 ().setLugarArrendado (false);
            getPanelPaso1 ().setNumeroModulosPequeños ("");
            getPanelPaso1 ().setNumeroModulosMedianos ("");
            getPanelPaso1 ().setHorasTamañoSoftware ("");
            getPanelPaso1 ().setHorasUsuariosEvaluadores ("");
            getPanelPaso1 ().setHorasLugarEvaluacion ("");
            getPanelPaso1 ().setUCE ("");
            getPanelPaso1 ().setUNCE ("");
            getPanelPaso1 ().setUEX ("");
            getPanelPaso1 ().setTotalUsuarios ("");
            getPanelPaso1 ().setDiasEvaluador ("");
            getPanelPaso1 ().setDiasEmpresa ("");
            getPanelPaso1 ().setFactorTiempoEntrega ("");
            getPanelPaso1 ().setEvaluador (false);
            getPanelPaso1 ().setEmpresa (false);
            jProgressBarPaso1.setValue (0);
            getPanelPaso3 ().setBarraProgreso (jProgressBarPaso1);

            //borrar datos panelPaso2
            getPanelPaso2 ().setValorUF ("");
            getPanelPaso2 ().setArriendoOficinaPesos ("");
            getPanelPaso2 ().setArriendoOficinaUF ("");
            getPanelPaso2 ().setGastosOperacionalesPesos ("");
            getPanelPaso2 ().setGastosOperacionalesUF ("");
            getPanelPaso2 ().setGastosMaterialApoyoPesos ("");
            getPanelPaso2 ().setGastosMaterialApoyoUF ("");
            getPanelPaso2 ().setInsumosPesos ("");
            getPanelPaso2 ().setInsumosUF ("");
            getPanelPaso2 ().setGastosBasicosPesos ("");
            getPanelPaso2 ().setGastosBasicosUF ("");
            getPanelPaso2 ().setGastosMovilizacionPesos ("");
            getPanelPaso2 ().setGastosMovilizacionUF ("");
            getPanelPaso2 ().setGastosCoffeBreaksPesos ("");
            getPanelPaso2 ().setGastosCoffeBreaksUF ("");
            getPanelPaso2 ().setGastosAlimentacionPesos ("");
            getPanelPaso2 ().setGastosAlimentacionUF ("");
            getPanelPaso2 ().setGastosServiciosExternosPesos ("");
            getPanelPaso2 ().setGastosServiciosExternosUF ("");
            getPanelPaso2 ().setGastosTotalPesos ("");
            getPanelPaso2 ().setGastosTotalUF ("");
            getPanelPaso2 ().setValorFactorCosto ("");
            getPanelPaso2 ().setTotalCostoPesos ("");
            getPanelPaso2 ().setTotalCostoUF ("");
            getPanelPaso2 ().setHorasReparacion ("");
            getPanelPaso2 ().setValorNumeroDesarrolladores ("");
            getPanelPaso2 ().setValorHHDesarrolladorPesos ("");
            getPanelPaso2 ().setValorHHDesarrolladorUF ("");
            jProgressBarPaso2.setValue (0);
            getPanelPaso3 ().setBarraProgreso (jProgressBarPaso2);

            //borrar datos panelPaso3
            getPanelPaso3 ().setEvaluadorExpertoValorHHPesos ("");
            getPanelPaso3 ().setEvaluadorExpertoValorHHUF ("");
            getPanelPaso3 ().setUsuarioEvaluadorValorHHPesos ("");
            getPanelPaso3 ().setUsuarioEvaluadorValorHHUF ("");
            getPanelPaso3 ().setTecnicoTotalValorHHPesos("");
            getPanelPaso3 ().setTecnicoTotalValorHHUF("");
            getPanelPaso3 ().setHorasTecnico("");
            getPanelPaso3 ().setTecnicoValorHHPesos("");
            getPanelPaso3 ().setTecnicoValorHHUF("");
            jProgressBarPaso3.setValue (0);
            getPanelPaso3 ().setBarraProgreso (jProgressBarPaso3);

            //borrar datos panelPaso4
            getPanelPaso4 ().setEvaluadorExpertoValorHH ("");
            getPanelPaso4 ().setEvaluadorExpertoHorasEvaluacion ("");
            getPanelPaso4 ().setUsuarioEvaluadorValorHH ("");
            getPanelPaso4 ().setUsuarioEvaluadorHorasEvaluacion ("");
            getPanelPaso4 ().setValorOtrosCostos ("");
            getPanelPaso4 ().setTotalCostoEvaluacionPesos ("");
            getPanelPaso4 ().setTotalCostoEvaluacionUF ("");
            getPanelPaso4 ().setDesarrolladorValorHH ("");
            getPanelPaso4 ().setDesarrolladorHorasReparacion ("");
            getPanelPaso4 ().setTotalCostoReparacionPesos ("");
            getPanelPaso4 ().setTotalCostoReparacionUF ("");
            jProgressBarPaso1.setValue (0);
            getPanelPaso3 ().setBarraProgreso (jProgressBarPaso1);
            jProgressBarPaso2.setValue (0);
            getPanelPaso3 ().setBarraProgreso (jProgressBarPaso2);
            jProgressBarPaso3.setValue (0);
            getPanelPaso3 ().setBarraProgreso (jProgressBarPaso3);

	}

                private void jMenuItemGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemGuardarActionPerformed
					guardar ();
                }//GEN-LAST:event_jMenuItemGuardarActionPerformed

                private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
					nombreArchivo="sin título";                                        
                                        progresoActual= false;
                                        progresoAnterior = false;
                                        //DialogoDatosCliente dialogoDatosCliente = new DialogoDatosCliente (this, true, usuarioActual);
					//dialogoDatosCliente.setVisible (true);
                }//GEN-LAST:event_jMenuItem1ActionPerformed

                /*
                 * GRUPO4 Prevencion de errores 1: Se verifica el estado de todas las barras de progreso
                 * si alguna no ha llegado al maximo se mantiene inhabilitada la ultima pestaña.
                 */
                private void jProgressBarPasosStateChanged (javax.swing.event.ChangeEvent evt) {
					if (!(getJProgressBarPaso1 ().getValue () == getJProgressBarPaso1 ().getMaximum ()) ||
					    !(getJProgressBarPaso2 ().getValue () == getJProgressBarPaso2 ().getMaximum ()) ||
				            !(getJProgressBarPaso3 ().getValue () == getJProgressBarPaso3 ().getMaximum ()))
                                        {
                                                jTabbedPanePasos.setEnabledAt(3, false);
                                                jTabbedPanePasos.setToolTipTextAt(3, "Debe completar las otras pestañas");
                                                //jTabbedPanePasos.setToolTipTextAt(3, "Debe completar las otras pestañas");
					}
                                        else
                                        {
                                                /*
                                                 * GRUPO4 Prevención de errores 7 Se prepara la pestaña 4 para prevenir error
                                                 * al generar el PDF
                                                 */
                                                jTabbedPanePasos.setEnabledAt(3, true);
                                                
                                                //Mostrar
                                                // GRUPO4: Se comenta el despliegue del diálogo de datos del cliente
                                                //DialogoDatosCliente dialogoDatosCliente = new DialogoDatosCliente (this, true, usuarioActual);
					        //dialogoDatosCliente.setVisible (true);
                                                panelPaso4.prepararPaso4();
                                                //jTabbedPanePasos.setToolTipTextAt(3, "Ahora puede realizar la cotización");
                                                JOptionPane.showMessageDialog(jTabbedPanePasos, "Ahora puede realizar la cotización","REUSA",JOptionPane.INFORMATION_MESSAGE);
                                                jTabbedPanePasos.setToolTipTextAt(3,null);
						//panelPaso4.calcularValores ();
					}
				}

				private void jTabbedPanePasosStateChanged (javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jTabbedPanePasosStateChanged
                                    /*GRUPO4 PRevención de errores: Inhabilitar limpieza de campos en la pestaña
                                    de cotización */
                                    if(jTabbedPanePasos.getSelectedIndex()==3)
                                        jButtonLimpiarFormulario.setVisible(false);
                                    else
                                        jButtonLimpiarFormulario.setVisible(true);
                                    // FIN GRUPO4
                                    if (!(getJProgressBarPaso1 ().getValue () == getJProgressBarPaso1 ().getMaximum ()) ||
						!(getJProgressBarPaso2 ().getValue () == getJProgressBarPaso2 ().getMaximum ()) ||
						!(getJProgressBarPaso3 ().getValue () == getJProgressBarPaso3 ().getMaximum ())) {

						panelPaso4.setPlanillaLista (false);
						panelPaso4.mostrarPaneles ();                                                
					} else {
						panelPaso4.calcularValores ();                                                
					}
				}//GEN-LAST:event_jTabbedPanePasosStateChanged

                                //Se agregó éste botón paraimplementar la funcionalidad
                                //limpiar formulario.

                                private void jButtonLimpiarFormularioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonLimpiarFormularioActionPerformed

                                    /* GRUPO4 PrevencionErrores2: Diálogo de confirmación para limpiar formulario
                                    *
                                    */

                                    int opcion= JOptionPane.showConfirmDialog(jTabbedPanePasos,"¿Seguro que desea limpiar los campos del formulario?","REUSA",2,JOptionPane.WARNING_MESSAGE);

                                    if(opcion==0)
                                    {
                                        int paso;
					paso = jTabbedPanePasos.getSelectedIndex ();
                                        if(paso == 0 || paso == 1 || paso == 2)
                                        {
                                            limpiarPaso (paso);

                                        }else
                                        {
                                            limpiarTodosPasos();
                                            // GRUPO4 Prevención de errores 2 --> al limpiar todos los campos, se retorna
                                            // a la primera pestaña
                                            jTabbedPanePasos.setSelectedIndex(0);
                                            // Fin GRUPO4
                                        }
                                    }
                                    
                                }//GEN-LAST:event_jButtonLimpiarFormularioActionPerformed

                                private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed
                                    try {
                                        String path = "manual de usuario/REUSA - Manual de Uso.pdf";
                                        //String path = "manual de usuario/manual Reusa.htm";
                                        Desktop.getDesktop().open(new File(path));
                                    } catch (Exception ex) {
                                        JOptionPane.showMessageDialog(this,"No existe archivo del manual, verifique la existencia del archivo 'Manual uso aplicacion.pdf'","REUSA",JOptionPane.ERROR_MESSAGE);
                                    }
                                    // TODO add your handling code here:
}//GEN-LAST:event_jMenuItem3ActionPerformed

                                private void jMenuItemAcercaDeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemAcercaDeActionPerformed
                                    DialogoAcercaDe dAD = new DialogoAcercaDe(this, true);
                                    dAD.setVisible(true);
}//GEN-LAST:event_jMenuItemAcercaDeActionPerformed

                                private void jMenuItemLimpiarFormularioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemLimpiarFormularioActionPerformed
                                    int paso;
                                    paso = jTabbedPanePasos.getSelectedIndex();
                                    limpiarPaso(paso);
}//GEN-LAST:event_jMenuItemLimpiarFormularioActionPerformed

                                private void jProgressBarPaso1StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jProgressBarPaso1StateChanged
                                    
                                    progresoActual=true;
                                    progresoAnterior=false;
                                }//GEN-LAST:event_jProgressBarPaso1StateChanged

                                private void jProgressBarPaso2StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jProgressBarPaso2StateChanged
                                    
                                    progresoActual=true;
                                    progresoAnterior=false;
                                }//GEN-LAST:event_jProgressBarPaso2StateChanged

                                private void jProgressBarPaso3StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jProgressBarPaso3StateChanged
                                    
                                    progresoActual=true;
                                    progresoAnterior=false;
                                }//GEN-LAST:event_jProgressBarPaso3StateChanged

	private void jMenuItemNuevaCotizacionActionPerformed (java.awt.event.ActionEvent evt) {

		int seleccion = JOptionPane.showOptionDialog (
			null,
			"Desea guardar la cotización actual",
			"REUSA",
			JOptionPane.YES_NO_CANCEL_OPTION,
			JOptionPane.QUESTION_MESSAGE,
			null, // null para icono por defecto.
			new Object[] {"Sí", "No", "Cancelar"}, // null para YES, NO y CANCEL
			"Cancelar");

		if (seleccion == 0) {
			guardar ();
		}

		if (seleccion == 0 || seleccion == 1) {
			for (int p = 0; p < 4; p++) {
				limpiarPaso (p);
			}
                        nombreArchivo="sin título";
                        progresoActual= false;
                        progresoAnterior = false;
		}
	}
/////////////////////////Funciones de Cargar Archivo//////////////////////////

	public void cargarTamañoSoftware (String tamaño) {
		if (tamaño.equals ("-1")) {
			getPanelPaso1 ().setTamañoSoftwarePequeño (false);
			getPanelPaso1 ().setTamañoSoftwareMedio (false);
			getPanelPaso1 ().setTamañoSoftwareGrande (false);

		}
		if (tamaño.equals ("1")) {
			int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setTamañoSoftwarePequeño (true);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);
                        return;

		}
		if (tamaño.equals ("2")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setTamañoSoftwareMedio (true);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);
                        return;

		}
		if (tamaño.equals ("3")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setTamañoSoftwareGrande (true);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);
                        return;

		}
	}

	public void cargarNumeroModulos (String ModPeq, String ModMed) {
		if (ModPeq.equals ("-1")) {
			getPanelPaso1 ().setNumeroModulosPequeños ("");

		}
		if (!ModPeq.equals ("-1")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setNumeroModulosPequeños (ModPeq);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);
		}
		if (ModMed.equals ("-1")) {
			getPanelPaso1 ().setNumeroModulosMedianos ("");
                        
		}
		if (!ModMed.equals ("-1")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setNumeroModulosMedianos (ModMed);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);

		}
	}

	public void cargarUsuariosEvaluadores (String UCE, String UNCE, String UEX, String Total) {
		if (UCE.equals ("-1")) {
			getPanelPaso1 ().setUCE ("");

		}
		if (!UCE.equals ("-1")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setUCE (UCE);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);

		}
		if (UNCE.equals ("-1")) {
			getPanelPaso1 ().setUNCE ("");

		}
		if (!UNCE.equals ("-1")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setUNCE (UNCE);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);

		}
		if (UEX.equals ("-1")) {
			getPanelPaso1 ().setUEX ("");

		}
		if (!UEX.equals ("-1")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setUEX (UEX);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);

		}
		if (Total.equals ("-1")) {
			getPanelPaso1 ().setTotalUsuarios ("");

		}
		if (!Total.equals ("-1")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setTotalUsuarios (Total);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);

		}
	}

	public void cargarLugarEvaluacion (String lugar) {
		if (lugar.equals ("-1")) {
			getPanelPaso1 ().setLugarEmpresa (false);
			getPanelPaso1 ().setLugarArrendado (false);

		}
		if (lugar.equals ("0")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setLugarEmpresa (true);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);

		}
		if (lugar.equals ("1")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setLugarArrendado (true);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);

		}
	}

	public void cargarTiempoEmplear (String HTamaño, String HUsuarios, String HLugar) {
		if (HTamaño.equals ("-1")) {
			getPanelPaso1 ().setHorasTamañoSoftware ("");

		}
		if (!HTamaño.equals ("-1")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setHorasTamañoSoftware (HTamaño);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);

		}
		if (HUsuarios.equals ("-1")) {
			getPanelPaso1 ().setHorasUsuariosEvaluadores ("");

		}
		if (!HUsuarios.equals ("-1")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setHorasUsuariosEvaluadores (HUsuarios);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);

		}
		if (HLugar.equals ("-1")) {
			getPanelPaso1 ().setHorasLugarEvaluacion ("");

		}
		if (!HLugar.equals ("-1")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setHorasLugarEvaluacion (HLugar);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);

		}
	}

	public void cargarPeriodoEntrega (String Evaluador, String Dias1, String Dias2, String Factor) {
		if (Evaluador.equals ("-1")) {
			getPanelPaso1 ().setEvaluador (false);
			getPanelPaso1 ().setEmpresa (false);

		}

		if (Evaluador.equals ("0")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setEvaluador (true);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);

		}
		if (Evaluador.equals ("1")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setEmpresa (true);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);

		}

		if (Dias1.equals ("-1")) {
			getPanelPaso1 ().setDiasEvaluador ("");
		}
		if (!Dias1.equals ("-1")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setDiasEvaluador (Dias1);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);
		}
		if (Dias2.equals ("-1")) {
			getPanelPaso1 ().setDiasEmpresa ("");
		}
		if (!Dias2.equals ("-1")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setDiasEmpresa (Dias2);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);
		}
		if (Factor.equals ("-1")) {
			getPanelPaso1 ().setFactorTiempoEntrega ("");
		}
		if (!Factor.equals ("-1")) {
			
                        int pre = getPanelPaso1().barraProgreso.getValue();
                        getPanelPaso1 ().setFactorTiempoEntrega (Factor);
                        int ac = getPanelPaso1().barraProgreso.getValue();
                        aumentoBarra(1,pre,ac);
		}
	}
//Terminar de arreglar la carga de datos
	public void cargarPaso3 (String valor1, String valor2, String valor3, String valor4,String valor5,String valor6,String valor7,String valor8, String valor9) {
		if (valor1.equals ("-1")) {
			getPanelPaso3 ().setEvaluadorExpertoValorHHPesos ("");
		}
		if (!valor1.equals ("-1")) {
			
//                        int pre = getPanelPaso3().barraProgreso.getValue();
                        getPanelPaso3 ().setEvaluadorExpertoValorHHPesos (valor1);
//                        int ac = getPanelPaso3().barraProgreso.getValue();
//                        aumentoBarra(3,pre,ac);
		}
		if (valor2.equals ("-1")) {
			getPanelPaso3 ().setEvaluadorExpertoValorHHUF ("");
		}
		if (!valor2.equals ("-1")) {
			
//                        int pre = getPanelPaso3().barraProgreso.getValue();
                        getPanelPaso3 ().setEvaluadorExpertoValorHHUF (valor2);
//                        int ac = getPanelPaso3().barraProgreso.getValue();
//                        aumentoBarra(3,pre,ac);
		}
		if (valor3.equals ("-1")) {
			getPanelPaso3 ().setUsuarioEvaluadorValorHHPesos ("");

		}
		if (!valor3.equals ("-1")) {
			
//                        int pre = getPanelPaso3().barraProgreso.getValue();
                        getPanelPaso3 ().setUsuarioEvaluadorValorHHPesos (valor3);
//                        int ac = getPanelPaso3().barraProgreso.getValue();
//                        aumentoBarra(3,pre,ac);
		}
		if (valor4.equals ("-1")) {
			getPanelPaso3 ().setUsuarioEvaluadorValorHHUF ("");
		}
		if (!valor4.equals ("-1")) {
			
//                        int pre = getPanelPaso3().barraProgreso.getValue();
                        getPanelPaso3 ().setUsuarioEvaluadorValorHHUF (valor4);
//                        int ac = getPanelPaso3().barraProgreso.getValue();
//                        aumentoBarra(3,pre,ac);
                        //falta leer los ultumos datos
		}//REPARAR
                if (valor5.equals ("-1")) {
			getPanelPaso3 ().setTecnicoValorHHPesos("");
		}
		if (!valor5.equals ("-1")) {

//                        int pre = getPanelPaso3().barraProgreso.getValue();
                        getPanelPaso3 ().setTecnicoValorHHPesos(valor5);
//                        int ac = getPanelPaso3().barraProgreso.getValue();
//                        aumentoBarra(3,pre,ac);

		}
                if (valor6.equals ("-1")) {
			getPanelPaso3 ().setTecnicoValorHHUF("");
		}
		if (!valor6.equals ("-1")) {

//                        int pre = getPanelPaso3().barraProgreso.getValue();
                        getPanelPaso3 ().setTecnicoValorHHUF(valor6);
//                        int ac = getPanelPaso3().barraProgreso.getValue();
//                        aumentoBarra(3,pre,ac);
                        //falta leer los ultumos datos
		}
                if (valor7.equals ("-1")) {
			getPanelPaso3 ().setHorasTecnico("");
		}
		if (!valor7.equals ("-1")) {

//                        int pre = getPanelPaso3().barraProgreso.getValue();
                        getPanelPaso3 ().setHorasTecnico (valor7);
//                        int ac = getPanelPaso3().barraProgreso.getValue();
//                        aumentoBarra(3,pre,ac);
                        //falta leer los ultumos datos
		}
                if (valor8.equals ("-1")) {
			getPanelPaso3 ().setTecnicoTotalValorHHPesos("");
		}
		if (!valor8.equals ("-1")) {

//                        int pre = getPanelPaso3().barraProgreso.getValue();
                        getPanelPaso3 ().setTecnicoTotalValorHHPesos(valor8);
//                        int ac = getPanelPaso3().barraProgreso.getValue();
//                        aumentoBarra(3,pre,ac);
                        //falta leer los ultumos datos
		}
                if (valor9.equals ("-1")) {
			getPanelPaso3 ().setTecnicoTotalValorHHUF("");
		}
		if (!valor9.equals ("-1")) {

//                        int pre = getPanelPaso3().barraProgreso.getValue();
                        getPanelPaso3 ().setTecnicoTotalValorHHUF(valor8);
//                        int ac = getPanelPaso3().barraProgreso.getValue();
//                        aumentoBarra(3,pre,ac);
                        //falta leer los ultumos datos
		}
	}

	public void cargarPaso2Final (String factor, String pesos, String uf) {
		if (factor.equals ("-1")) {
			getPanelPaso2 ().setValorFactorCosto ("");
		}
		if (!factor.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setValorFactorCosto (factor);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
		if (pesos.equals ("-1")) {
			getPanelPaso2 ().setTotalCostoPesos ("");
		}
		if (!pesos.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setTotalCostoPesos (pesos);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
		if (uf.equals ("-1")) {
			getPanelPaso2 ().setTotalCostoUF ("");
		}
		if (!uf.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setTotalCostoUF (uf);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
	}

	public void cargarPaso2Reparacion (String horas, String numeroDesarrolladores, String pesos, String uf) {
		if (horas.equals ("-1")) {
			getPanelPaso2 ().setHorasReparacion ("");
		}
		if (!horas.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setHorasReparacion (horas);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
		if (numeroDesarrolladores.equals ("-1")) {
			getPanelPaso2 ().setValorNumeroDesarrolladores ("");
		}
		if (!numeroDesarrolladores.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setValorNumeroDesarrolladores (numeroDesarrolladores);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
		if (pesos.equals ("-1")) {
			getPanelPaso2 ().setValorHHDesarrolladorPesos ("");
		}
		if (!pesos.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setValorHHDesarrolladorPesos (pesos);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
		if (uf.equals ("-1")) {
			getPanelPaso2 ().setValorHHDesarrolladorUF ("");
		}
		if (!uf.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setValorHHDesarrolladorUF (uf);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
	}

	public void cargarUF (String uf) {
		if (uf.equals ("-1")) {
			getPanelPaso2 ().setValorUF ("");
		}
		if (!uf.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setValorUF (uf);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
	}

	public void cargarGastosArriendo (String pesos, String uf) {
		if (pesos.equals ("-1")) {
			getPanelPaso2 ().setArriendoOficinaPesos ("");
		}
		if (!pesos.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setArriendoOficinaPesos (pesos);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
		if (uf.equals ("-1")) {
			getPanelPaso2 ().setArriendoOficinaUF ("");
		}
		if (!uf.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setArriendoOficinaUF (uf);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
	}

	public void cargarGastosOperacionales (String pesos, String uf) {
		if (pesos.equals ("-1")) {
			getPanelPaso2 ().setGastosOperacionalesPesos ("");
		}
		if (!pesos.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setGastosOperacionalesPesos (pesos);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
		if (uf.equals ("-1")) {
			getPanelPaso2 ().setGastosOperacionalesUF ("");
		}
		if (!uf.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setGastosOperacionalesUF (uf);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
	}

	public void cargarGastosMaterialApoyo (String pesos, String uf) {
		if (pesos.equals ("-1")) {
			getPanelPaso2 ().setGastosMaterialApoyoPesos ("");
		}
		if (!pesos.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setGastosMaterialApoyoPesos (pesos);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
		if (uf.equals ("-1")) {
			getPanelPaso2 ().setGastosMaterialApoyoUF ("");
		}
		if (!uf.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setGastosMaterialApoyoUF (uf);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
	}

	public void cargarGastosInsumos (String pesos, String uf) {
		if (pesos.equals ("-1")) {
			getPanelPaso2 ().setInsumosPesos ("");
		}
		if (!pesos.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setInsumosPesos (pesos);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
		if (uf.equals ("-1")) {
			getPanelPaso2 ().setInsumosUF ("");
		}
		if (!uf.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setInsumosUF (uf);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
	}

	public void cargarGastosBasicos (String pesos, String uf) {
		if (pesos.equals ("-1")) {
			getPanelPaso2 ().setGastosBasicosPesos ("");
		}
		if (!pesos.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setGastosBasicosPesos (pesos);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
		if (uf.equals ("-1")) {
			getPanelPaso2 ().setGastosBasicosUF ("");
		}
		if (!uf.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setGastosBasicosUF (uf);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
	}

	public void cargarGastosTotal (String pesos, String uf) {
		if (pesos.equals ("-1")) {
			getPanelPaso2 ().setGastosTotalPesos ("");
		}
		if (!pesos.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setGastosTotalPesos (pesos);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
		if (uf.equals ("-1")) {
			getPanelPaso2 ().setGastosTotalUF ("");
		}
		if (!uf.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setGastosTotalUF (uf);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
	}

	public void cargarGastosMovilizacion (String pesos, String uf) {
		if (pesos.equals ("-1")) {
			getPanelPaso2 ().setGastosMovilizacionPesos ("");
		}
		if (!pesos.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setGastosMovilizacionPesos (pesos);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
		if (uf.equals ("-1")) {
			getPanelPaso2 ().setGastosMovilizacionUF ("");
		}
		if (!uf.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setGastosMovilizacionUF (uf);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
	}

	public void cargarGastosCoffeBreaks (String pesos, String uf) {
		if (pesos.equals ("-1")) {
			getPanelPaso2 ().setGastosCoffeBreaksPesos ("");
		}
		if (!pesos.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setGastosCoffeBreaksPesos (pesos);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
		if (uf.equals ("-1")) {
			getPanelPaso2 ().setGastosCoffeBreaksUF ("");
		}
		if (!uf.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setGastosCoffeBreaksUF (uf);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
	}

	public void cargarGastosAlimentacion (String pesos, String uf) {
		if (pesos.equals ("-1")) {
			getPanelPaso2 ().setGastosAlimentacionPesos ("");
		}
		if (!pesos.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setGastosAlimentacionPesos (pesos);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
		if (uf.equals ("-1")) {
			getPanelPaso2 ().setGastosAlimentacionUF ("");
		}
		if (!uf.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setGastosAlimentacionUF (uf);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
	}

	public void cargarGastosServicios (String pesos, String uf) {
		if (pesos.equals ("-1")) {
			getPanelPaso2 ().setGastosServiciosExternosPesos ("");
		}
		if (!pesos.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setGastosServiciosExternosPesos (pesos);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
		if (uf.equals ("-1")) {
			getPanelPaso2 ().setGastosServiciosExternosUF ("");
		}
		if (!uf.equals ("-1")) {
			
                        int pre = getPanelPaso2().barraProgreso.getValue();
                        getPanelPaso2 ().setGastosServiciosExternosUF (uf);
                        int ac = getPanelPaso2().barraProgreso.getValue();
                        aumentoBarra(2,pre,ac);
		}
	}
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButtonLimpiarFormulario;
    private javax.swing.JLabel jLabelFechaUltimaVisita;
    private javax.swing.JLabel jLabelNombreUsuario;
    private javax.swing.JLabel jLabelPaso1;
    private javax.swing.JLabel jLabelPaso2;
    private javax.swing.JLabel jLabelPaso3;
    private javax.swing.JLabel jLabelUsuarioActual;
    private javax.swing.JMenu jMenuArchivo;
    private javax.swing.JMenu jMenuAyuda;
    private javax.swing.JMenuBar jMenuBar;
    private javax.swing.JMenu jMenuEditar;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem3;
    private javax.swing.JMenuItem jMenuItemAbrir;
    private javax.swing.JMenuItem jMenuItemAcercaDe;
    private javax.swing.JMenuItem jMenuItemCerrarSesion;
    private javax.swing.JMenuItem jMenuItemDefinirValoresEstimacion;
    private javax.swing.JMenuItem jMenuItemFAQ;
    private javax.swing.JMenuItem jMenuItemGuardar;
    private javax.swing.JMenuItem jMenuItemLimpiarFormulario;
    private javax.swing.JMenuItem jMenuItemModificarCuenta;
    private javax.swing.JMenuItem jMenuItemModificarValores;
    private javax.swing.JMenuItem jMenuItemNuevaCotizacion;
    private javax.swing.JMenuItem jMenuItemSalir;
    private javax.swing.JMenu jMenuMetodoAdaptado;
    private javax.swing.JMenu jMenuPropiedades;
    private javax.swing.JProgressBar jProgressBarPaso1;
    private javax.swing.JProgressBar jProgressBarPaso2;
    private javax.swing.JProgressBar jProgressBarPaso3;
    private javax.swing.JSeparator jSeparatorCotizacionCuenta;
    private javax.swing.JSeparator jSeparatorCuentaSalir;
    private javax.swing.JTabbedPane jTabbedPanePasos;
    private javax.swing.JMenuItem menuItemRedo;
    private javax.swing.JMenuItem menuItemUndo;
    private pestañas.PanelPaso1 panelPaso1;
    private pestañas.PanelPaso2 panelPaso2;
    private pestañas.PanelPaso3 panelPaso3;
    private pestañas.PanelPaso4 panelPaso4;
    // End of variables declaration//GEN-END:variables

    public void windowOpened(WindowEvent e) {        
    }

    /*
     * GRUPO4 Prevención de errores 3: Confirmacion al cerrar la ventana
     */
    public void windowClosing(WindowEvent e) {

    int seleccion;   

        if(progresoAnterior==progresoActual)
        {
            seleccion= 1;
        }
        else
        {
            seleccion = JOptionPane.showConfirmDialog(this,"El archivo "+nombreArchivo+" ha cambiado.\n¿desea guardar los cambios?","REUSA",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
        }
        if (seleccion == JOptionPane.YES_OPTION )
        {
            guardar();
        }
        if (seleccion == JOptionPane.NO_OPTION )
        {
            e.getWindow().setVisible(false);
            e.getWindow().dispose();
        }
        if (seleccion == JOptionPane.CANCEL_OPTION )
        {
            e.getWindow().setVisible(true);            
        }
    }
    // Fin GRUPO4
    public void windowClosed(WindowEvent e) {        
    }

    public void windowIconified(WindowEvent e) {        
    }

    public void windowDeiconified(WindowEvent e) {        
    }

    public void windowActivated(WindowEvent e) {
        
    }

    public void windowDeactivated(WindowEvent e) {
        
    }
}
